package WordCount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

//继承类重写里面的方法
//Map与Reduce是串连执行的Map的输出末端类型是Reduce的输入始端类型
//Reduce的输出始端类型（hive,9）依然为Text, IntWritable
public class WCReducer  extends Reducer<Text, IntWritable,Text, IntWritable> {
    /**
     *
     * (hadoop,1)
     * (hive,1)  (hive,1)  (hive,1)
     * (hive,{1,1,1})
     */

    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

        //把迭代器的value({1,1,1,1})
        //初始化计数器
        int count = 0;
        //开始计数
        for (IntWritable value: values) {
          count = count+value.get();//将所有的 1 累加
        }
        //封装数据并输出（写到文本里 例如：（hive，9））
         context.write(key,new IntWritable(count));
    }
}
